Group communication protocol designed for multicast communication may be used to communicate messages between endpoints forming a group. Communication endpoints can be processes or objects, or any entity that can send and receive messages to/from a group.
Messages from different senders are conventionally processed in a First In First Out (FIFO) order in a single queue for incoming messages by one thread. The messages are processed sequentially in the order they are received. A bottleneck may thus be formed since every message has to wait for its turn to be processed accordingly.
One solution is to use a multiplexer to run multiple building blocks over the same channel thereby reducing the number of channels and threads, and thus minimizing memory consumption. However, the use of a multiplexer requires different semantics for each channel.